/**
 * Created by Zhao Bo En on 2017/12/13
 */
//日期转换

Date.prototype.Format = function (fmt) { //author: meizz
    var o = {
        "M+": this.getMonth() + 1, //月份
        "d+": this.getDate(), //日
        "h+": this.getHours(), //小时
        "m+": this.getMinutes(), //分
        "s+": this.getSeconds(), //秒
        "q+": Math.floor((this.getMonth() + 3) / 3), //季度
        "S": this.getMilliseconds() //毫秒
    };
    if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
    for (var k in o)
        if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
    return fmt;
}

var WDS = null;  //选择日时的数据
var WMS = null;  //选择月时的数据
var startTime = null;       //开始时间，表格导出数据使用
var endTime = null;         //结束时间，表格导出数据使用
var farmName = null;       //电场名称，表格导出数据使用
var fileName = null;
var remark = null;
var factor = 0;
$(function () {
    //$.ajaxSettings.async = false;
    //lodaTu();
    showDiv();
    /*var options=$("#cs option:selected");//获取id为"cs"的选中的项
    alert(options.val());*/
    dateTiemSelect();
    dateTiemSelect2();
    $("#query").click(function () {
        // alert("111");
        if($("#startTime").val()===""){
            layer.msg("输入开始时间！", {icon: 2});
            $("#endTime").val("");
        }
        var startTime = new Date($("#startTime").val().replace(/\-/g, "\/"));
        var endTime = new Date($("#endTime").val().replace(/\-/g, "\/"));
        if(startTime >endTime){
            layer.msg("开始时间不能大于结束时间！", {icon: 2});
            $("#startTime").val("");
            $("#endTime").val("");
            return false;
        }else {
            $("#wfDayStatistics") .bootstrapTable("destroy");
            startTime = $("#startTime").val();
            endTime = $("#endTime").val();
            var aa = $('#selectFarm', window.parent.document).find("option:selected").text();
            new tableFactory(startTime,endTime,aa);

            load();
        }
    })
    $("#query2").click(function () {
        // alert("111");
        if($("#startTime2").val()===""){
            layer.msg("输入开始时间！", {icon: 2});
            $("#endTime2").val("");
        }
        var startTime = new Date($("#startTime2").val().replace(/\-/g, "\/"));
        var endTime = new Date($("#endTime2").val().replace(/\-/g, "\/"));
        if(startTime >endTime){
            layer.msg("开始时间不能大于结束时间！", {icon: 2});
            $("#startTime2").val("");
            $("#endTime2").val("");
            return false;
        }else {
            $("#wfDayStatistics") .bootstrapTable("destroy");
            startTime = $("#startTime2").val();
            endTime = $("#endTime2").val();
            var aa = $('#selectFarm', window.parent.document).find("option:selected").text();
            new tableFactory(startTime,endTime,aa);

            load();
        }
    })
    var options=$("#cs option:selected");//获取id为"cs"的选中的项

    var aa = $('#selectFarm', window.parent.document).find("option:selected").text();
    console.log(aa);
    //  fileName = aa.substring(31,aa.length);
    // console.log(fileName);
    if(options.val() == 4){
        startTime = $("#startTime").val();
        endTime = $("#endTime").val();
    }
    if(options.val() == 5){
        startTime = $("#startTime2").val();
        endTime = $("#endTime2").val();
    }

    var table = new tableFactory(startTime,endTime,aa);
});

//点击时间查询
function dateTiemSelect(){
    layui.use('laydate', function(){
        var laydate = layui.laydate;
        laydate.render({
            elem: '#startTime', //新增的日期
            type: 'date',//日期类型date表示年月日
            /*  trigger: 'click',//如果绑定的元素非输入框，则默认事件为：click*/
            theme: '#071f3a',//自定义主题
            min: '2014-1-1',//限制最小日期
            max: '2028-12-31'//限制最大日期
        });
        laydate.render({
            elem: '#endTime', //新增的日期
            type: 'date',
            theme: '#071f3a',//自定义主题
            max: '2028-12-31',//限制最大日期
            ready: function(date){

            },
            done: function(value, date, endDate){//选中之后的对调函数

            }
        });
    });
}

//点击时间查询
function dateTiemSelect2(){
    layui.use('laydate', function(){
        var laydate = layui.laydate;
        laydate.render({
            elem: '#startTime2', //新增的日期
            type: 'month',//日期类型date表示年月日
            /*  trigger: 'click',//如果绑定的元素非输入框，则默认事件为：click*/
            theme: '#071f3a',//自定义主题
            min: '2014-1-1',//限制最小日期
            max: '2028-12-31'//限制最大日期
        });
        laydate.render({
            elem: '#endTime2', //新增的日期
            type: 'month',
            theme: '#071f3a',//自定义主题
            max: '2028-12-31',//限制最大日期
            ready: function(date){

            },
            done: function(value, date, endDate){//选中之后的对调函数

            }
        });
    });
}
//初始化加载数据
function load() {
    var index = layer.load(1);
    var options=$("#cs option:selected");//获取id为"cs"的选中的项
    var intervalnum=$("#cf option:selected");//获取id为"cf"的预报间隔时间
    var WfDS = new Array();  //查询的所有数据
    var date = new Array(); //所有日期
    var rmseAccuracy = new Array();//功率均方根误差准确率（1-均方根误差）
    var rmse = new Array();//功率均方根误差
    var mae = new Array();//功率平均绝对误差
    var r_power = new Array();//功率相关性系数
    var farmid = $('#selectFarm', window.parent.document).val();//获取父页面的元素
    var wucha = new Array();
    if(options.val() == 4){ //得到当前下拉框选中的值
        var p = {
            "startTime":$("#startTime").val(),
            "endTime":$("#endTime").val(),
            "farmid":farmid,
            "intervalnum":intervalnum.val()
        };
        //获取实况数据
        $.ajax({    //获取数据(日)
                url : "../wfDayStatisticsManage/selectForTime",
            type : "get",
            contentType : "application/json",
            dataType : "json",
            data : p,
            success : function(data) {
                layer.close(index);
                WDS = data.wfList;
                WfDS = data.wfList;
                remark = data.Remark[0];
                factor = data.infactor;
                $.each(data.wfList, function (index, item) {
                    var time1 = new Date(parseInt(item.stime)).Format("yyyy-MM-dd");
                    date.push(time1); //日期
                    if (item.rmse != null) {
                        var str = 1 - item.rmse;
                        if ((str * 100 + remark + factor).toFixed(2) > 100) {
                            rmseAccuracy.push(100)
                        } else {
                            rmseAccuracy.push((str * 100 + remark + factor).toFixed(1));
                            wucha.push((100 - ((str * 100 + remark + factor).toFixed(1))).toFixed(2));

                        }
                    }
                    if (item.mae != null) {
                        mae.push((item.mae * 100).toFixed(1));
                    }
                    if(item.r_power != null){
                        if ((item.r_power + remark).toFixed(2) > 1) {
                            r_power.push(1)
                        } else {
                            r_power.push((item.r_power + remark).toFixed(2));
                        }
                    }
                });
                lodaTu(rmseAccuracy,date,mae,r_power,wucha);
                var totalRmse = 0;
                var totalMae = 0;
                var totalRpower = 0;
                var totalRmseAverage = 0;
                var totalMaeAverage = 0;
                var totalRpowerAverage = 0;
                var j = 0;
                for(var i in WfDS){
                    totalRmse += WfDS[i].rmse;
                    totalMae += WfDS[i].mae;
                    totalRpower += WfDS[i].r_power;
                    j++;
                }
                totalRmseAverage = totalRmse/j;
                totalMaeAverage = totalMae/j;
                totalRpowerAverage = totalRpower/j;
                var a={stime:'平均值',rmse:totalRmseAverage,mae:totalMaeAverage,r_power:totalRpowerAverage};
                WfDS.push(a);
                $("#wfDayStatistics").bootstrapTable("load", WfDS);
            },
            error :function(){
                layer.close(index);
                layer.msg("没有找到数据！", {icon: 2});
            }
        });
    }
    if(options.val() == 5){
        var p = {
            "startTime":$("#startTime2").val(),
            "endTime":$("#endTime2").val(),
            "farmid":farmid,
            "intervalnum":intervalnum.val()
        };
        //获取实况数据
        $.ajax({    //获取数据(月)
            url : "../wfDayStatisticsManage/selectForTimeMonth",
            type : "get",
            contentType : "application/json",
            dataType : "json",
            data : p,
            success : function(data) {
                layer.close(index);
                WMS = data.wfList;
                WfDS = data.wfList;
                remark = data.Remark[0];
                factor = data.infactor;
                $.each(data.wfList, function (index, item) {
                    var time1 = new Date(parseInt(item.stime)).Format("yyyy-MM");
                    date.push(time1); //日期
                    if (item.rmse != null) {
                        var str = 1 - item.rmse;
                        if ((str * 100 + remark + factor).toFixed(1) > 100) {
                            rmseAccuracy.push(100)
                        } else {
                            rmseAccuracy.push((str * 100 + remark + factor).toFixed(1));
                            wucha.push((100 - ((str * 100 + remark + factor).toFixed(1))).toFixed(2));
                        }
                    }
                    if (item.mae != null) {
                        mae.push((item.mae * 100).toFixed(1));
                    }
                    if (item.r_power != null) {
                        if ((item.r_power + remark).toFixed(2) > 1) {
                            r_power.push(1)
                        } else {
                            r_power.push((item.r_power + remark).toFixed(2));
                        }
                    }

                });
                lodaTu(rmseAccuracy,date,mae,r_power,wucha);
                var totalRmse = 0;
                var totalMae = 0;
                var totalRpower = 0;
                var totalRmseAverage = 0;
                var totalMaeAverage = 0;
                var totalRpowerAverage = 0;
                var j = 0;
                for(var i in WfDS){
                    totalRmse += WfDS[i].rmse;
                    totalMae += WfDS[i].mae;
                    totalRpower += WfDS[i].r_power;
                    j++;
                }
                totalRmseAverage = totalRmse/j;
                totalMaeAverage = totalMae/j;
                totalRpowerAverage = totalRpower/j;
                var a={stime:'平均值',rmse:totalRmseAverage,mae:totalMaeAverage,r_power:totalRpowerAverage};
                WfDS.push(a);
                $("#wfDayStatistics").bootstrapTable("load", WfDS);
            },
            error: function () {
                layer.close(index);
                layer.msg("没有找到数据！", {icon: 2});
            },

        });
    }


}



//表格样式
function tableFactory(startTime,endTime,fileNames) {
    var options=$("#cs option:selected");//获取id为"cs"的选中的项
    var me = this;
    //me.data = null;//有功功率
    me.windData = null;//电站信息
    var init = function () {
        $.when(me.getWindData()).then(function () {
            $("#wfDayStatistics").bootstrapTable({
                method: 'get',				  //请求方式（*）
                striped: true,					  //是否显示行间隔色
                cache: false,					   //是否使用缓存，默认为true，所以一般情况下需要设置一下这个属性（*）
                pagination: true,				   //是否显示分页（*）
                sortable: true,					 //是否启用排序
                sortOrder: "desc",				   //排序方式
                sidePagination: "client",		   //分页方式：client客户端分页，server服务端分页（*）
                pageNumber: 1,					   //初始化加载第一页，默认第一页
                search: true,					   //是否显示表格搜索，只能进行客户端搜索
                strictSearch: false,                //true为全匹配，false为模糊查询
                showColumns: true,				  //是否显示筛选列按钮
                showRefresh: true,			  //是否显示刷新按钮
                clickToSelect:true,				//是否启用点击选中行
                showToggle: false,					//是否显示详细视图和列表视图的切换按钮
                cardView: false,					//是否显示详细视图
                detailView: false,				   //是否显示父子表
                singleSelect: true,                //是否支持多选,false表示支持多选，true表示不支持
                //undefinedText: '_',              //当数据为undefined时显示的字符
                height: 'auto',
                pageSize: 5,
                pageList: [5,20,30],
                editable:true,//是否可以行内编辑
                showExport: true,//是否显示导出按钮
                exportDataType:'all',//导出全部
                exportTypes:[  'csv'], //导出文件类型
                export: 'glyphicon-export icon-share',
                exportOptions:{
                    // ignoreColumn: [0,1],  //忽略某一列的索引
                    fileName:startTime+"_"+endTime+"_"+fileNames,  //文件名称设置
                    // worksheetName: 'sheet1',  //表格工作区名称
                    // tableName: '总台帐报表',
                    //  excelstyles: ['background-color', 'color', 'font-size', 'font-weight'],
                    // onMsoNumberFormat: DoOnMsoNumberFormat
                },
                columns: [{
                    title: '日期',
                    field: 'stime',
                    align: 'center',
                    valign: 'middle',
                    formatter: function (value, row, index) {
                        if(value == '平均值'){
                            return '平均值';
                        }else {
                            var csop = $("#cs option:selected")
                            if (csop.val() == 4)
                                return new Date(parseInt(value)).Format("yyyy-MM-dd");
                            else
                                return new Date(parseInt(value)).Format("yyyy-MM");
                        }

                     //   return me.getWfDSTime(row.mae);
                    }
                },{
                    title: '功率预报准确率(%)',
                    field: 'rmse',
                    align: 'center',
                    valign: 'middle',
                    formatter: function (value, row, index) {
                        if (((1 - value) * 100 + remark + factor).toFixed(2) > 100) {
                            return 100
                        } else {
                            return ((1 - value) * 100 + remark + factor).toFixed(2);
                        }
                    }

                }, {
                    title: '平均绝对百分比误差(%)',
                    field: 'mae',
                    align: 'center',
                    valign: 'middle',
                    formatter: function (value, row, index) {
                        return (value*100).toFixed(2);
                    }
                }, {
                    title: '功率相关性系数',
                    field: 'r_power',
                    align: 'center',
                    valign: 'middle',
                    formatter: function (value, row, index) {
                        if ((value).toFixed(2) > 1) {
                            return 1
                        } else {
                            return value.toFixed(2);
                        }
                    }
                }

                ],
                onEditableSave: function (field, row, oldValue, $el) {//编辑之后的事件
                    var p ={
                        id:row.fid,
                        power:row.power
                    }
                    $.ajax({
                        type: "post",
                        url: "../roseManage/edit",
                        data:row,//后台使用了实体类，前台就不能用Json.stringify
                        dataType: 'JSON',
                        success: function (data, status) {
                            /*if (status == "success") {
                                alert('提交数据成功');
                            }*/
                        },
                        error: function () {
                            alert('编辑失败');
                        },
                        complete: function () {

                        }

                    });
                }
            });
            //me.loadData();
            load();
        });
    }
    init();
}

tableFactory.prototype = {

    /*loadData: function () {
        var me = this;
        var index = layer.load(1);
        $.getJSON('/roseManage/selectAll', '', function (_data) {
            me.data = _data;
            $("#rose").bootstrapTable("load", _data);
            layer.close(index);
        })
    },*/

    //加载电站信息
    getWindData:function () {
        var me = this;
        $.getJSON('../windManage/selectAll', '', function (_data) {
            me.WindData = _data;
        })
    },
    getWindById: function (farmid) {
        var farmName = '';
        var me = this;
        $.each(me.WindData, function (index, item) {
            if (item.farmid === farmid) {
                farmName = item.farmname;
                return false;
            }
        });
        return farmName;
    },

    /*获取时间*/
    getWfDSTime:function (mae) {
        var time1 = "";
        var speed="";
        var options=$("#cs option:selected");//获取id为"cs"的选中的项
        if(options.val() == 4){
            if(WDS.length>0){
                $.each(WDS, function (index, item) {
                    var r = item.mae;
                    if(r == mae){
                        time1 = new Date(parseInt(item.dataday)).Format("yyyy-MM-dd");
                        return false;
                    }
                });
                return time1;
            }
        }
        if(options.val() == 5){
            if(WMS.length>0){
                $.each(WMS, function (index, item) {
                    var r = item.mae;
                    if(r == mae){
                        time1 = new Date(parseInt(item.datamonth)).Format("yyyy-MM");
                        return false;
                    }
                });
                return time1;
            }
        }

    },

}

function lodaTu(rmseAccuracy,date,mae,r_power,wucha) {
    var myChart = echarts.init(document.getElementById("main"));
    option = {
        title: {
            text: '准确率误差图',
            textStyle: {
                color: '#fff'
            }
        },
        tooltip: {
            show:true,
            trigger: 'axis',
            axisPointer: { // 坐标轴指示器，坐标轴触发有效
                type:'cross',
                crossStyle:{
                    color:'#ddd'
                }
            }
        },
        legend: {
            data: ['功率预报准确率', '平均绝对百分比误差','功率相关性系数','误差'],
            selected:{
                '平均绝对百分比误差':false,
                '功率相关性系数':false,
            },
            align: 'right',
            right: 10,
            textStyle: {
                color: '#fff',
                fontSize: 14
            },
        },
        grid: {
            left: '3%',
            right: '4%',
            bottom: '3%',
            containLabel: true
        },
        xAxis: [{
            type: 'category',
            //data: ['0m/s-3m/s', '3m/s-6m/s', '6m/s-9m/s', '9m/s-12m/s', '12m/s以上'],
            data:date,
            axisLine:{
                lineStyle:{
                    color:'#9B4E4E',
                    width: 1,//这里是为了突出显示加上的
                }
            },
            axisLabel: {
                show: true,
                textStyle: {
                    color: '#fff'
                }
            }
        }],
        yAxis: [
            {
                splitLine: {show: false},//去除网格线
                type: 'value',
                name: '%',

                axisLabel: {
                    formatter: '{value}' + '%',
                    textStyle: {
                        color: '#fff'
                    }
                }
            },
            {
                splitLine: {show: false},//去除网格线
                max: 1,
                min: 0,
                scale: true,
                nameTextStyle: {
                    color: '#fff'
                },
                type: 'value',
                axisLabel: {
                    formatter: '{value}',
                    textStyle: {
                        color: "#fff"
                    }
                }
            }
        ],
        dataZoom: [
            {
                show: true,
                height: 30,
                xAxisIndex: [0],
                bottom: 0,
                type: 'slider',
                start: 0,
                end: 60,
                handleIcon: 'path://M306.1,413c0,2.2-1.8,4-4,4h-59.8c-2.2,0-4-1.8-4-4V200.8c0-2.2,1.8-4,4-4h59.8c2.2,0,4,1.8,4,4V413z',
                handleSize: '100%',
                handleStyle: {
                    color:'#9B4E4E'
                }
            },
            {
                show:true,
                type: 'inside',
                height:15,
                start: 1,
                end:50
            }
        ],
        series: [{
            name: '功率预报准确率',
            type: 'bar',
            yAxisIndex: 0,
            //data: [-3,5,2,-1,-2.3],
            barMaxWidth: 30,
            stack: '总量',
            data: rmseAccuracy,
            //barWidth: 15,
            itemStyle: {
                normal: {
                    color: '#000080',
                    barBorderRadius: 6,
                }
            },
        }, {
            name: '平均绝对百分比误差',
            type: 'bar',
            yAxisIndex: 0,
            //data: [3, 5, 5, 2, 3],
            barMaxWidth: 30,
            data: mae,
            //data:windFrequencyWeek,
            //barWidth: 15,
            itemStyle: {
                normal: {
                    color: '#00CED1',
                    barBorderRadius: 6,
                }
	            },
	        }, {
            name: '功率相关性系数',
            type: 'bar',
            yAxisIndex: 1,
            //data: [3, 7, 2, 3, 1],
            barMaxWidth: 30,
            data: r_power,
            //data:windFrequencyQuarter,
            //barWidth: 15,
            itemStyle: {
                normal: {
                    color: '#7A378B',
                    barBorderRadius: 6,
                }
            },
        }, {
            name: '误差',
            type: 'bar',
            yAxisIndex: 0,
            stack: '总量',
            //data: [3, 7, 2, 3, 1],
            barMaxWidth: 30,
            data: wucha,
            //data:windFrequencyQuarter,
            //barWidth: 15,
            itemStyle: {
                normal: {
                    color: '#808080',
                    //barBorderColor: 'tomato',
                    barBorderWidth:3,
                    barBorderRadius: 6,

                    //borderType:"dotted"
                }
            },
        }
	        ]
    };
    myChart.setOption(option);
}

function showDiv() {
    $("#box1").show();
    $("#box2").hide();
    $("select").change(function () {
        var selectedValue = $(this).val();

        if (selectedValue == 4) {

            $("#box1").show();

            $("#box2").hide();
        }
        if (selectedValue == 5) {

            $("#box2").show();

            $("#box1").hide();
        }
    });
}